|
In static program analysis, Soot is a language manipulation and optimization framework consisting of intermediate languages for the Java programming language. It has been developed by the Sable Research Group at McGill University known for its SableVM, a Java virtual machine and the AspectBench Compiler, an open research compiler for AspectJ. In 2010, two research papers on Soot ( and ) were selected as IBM ''CASCON First Decade High Impact Papers'' among 12 other papers from the 425 entries.〔http://dl.acm.org/citation.cfm?id=1925805〕 Soot provides four intermediate representations for use through its API for other analysis programs to access and build upon:〔http://www.sable.mcgill.ca/soot/〕 * Baf: a near bytecode representation. * Jimple: a simplified version of Java source code that has a maximum of three components per statement. * Shimple: an SSA variation of Jimple (similar to GIMPLE). * Grimp: an aggregated version of Jimple suitable for decompilation and code inspection. The current Soot software release also contains detailed program analyses that can be used out-of-the-box, such as context-sensitive flow-insensitive points-to analysis,〔http://www.sable.mcgill.ca/soot/tutorial/analysis/index.html〕 call-graph analysis and domination analysis (answering the question "must event ''a'' follow event ''b''?"). It also has a decompiler called dava. Soot is free software available under the GNU Lesser General Public License (LGPL). ==Jimple == Jimple is an intermediate representation of a Java program designed to be easier to optimize than Java bytecode. It is typed, has a concrete syntax and is based on three-address code. Jimple It includes only 15 different operations, thus simplifying flow analysis. By contrast, java bytecode includes over 200 different operations. Unlike java bytecode, in Jimple local and stack variables are typed and Jimple is inherently type safe. Converting to Jimple, or "Jimplifying" (after "simplifying"), is conversion of bytecode to three-address code. The idea behind the conversion, first investigated by Clark Verbrugge, is to associate a variable to each position in the stack. Hence stack operations become assignments involving the stack variables. 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Soot (software)」の詳細全文を読む スポンサード リンク
|